<!DOCTYPE html>
<html lang="ar">
	<head>
		<meta charset="utf-8" />
		<base href="../../../" />
		<script src="page.js"></script>
		<link type="text/css" rel="stylesheet" href="page.css" />
	</head>
	<body class="rtl">
		<h1>[name]</h1>

		<p class="desc">
		تمثل الفئة متجه 4D [link:https://en.wikipedia.org/wiki/Vector_space vector].
		متجه 4D هو رباعي من الأرقام المرتبة (مسمى x و y و z و w) ، والذي يمكن استخدامه لتمثيل عدد من الأشياء ، مثل:
		</p>
		 
		<ul>
		<li>نقطة في الفضاء 4D.</li>
		<li>
		اتجاه وطول في الفضاء 4D. في three.js ، سيكون الطول دائمًا
		[link:https://en.wikipedia.org/wiki/Euclidean_distance المسافة الإقليدية]
		(المسافة المستقيمة) من `(0، 0، 0، 0)` إلى `(x، y، z، w)`
		ويتم قياس الاتجاه أيضًا من `(0، 0، 0، 0)` نحو `(x، y، z، w)`.
		</li>
		<li>أي رباعي مرتب عشوائي من الأرقام.</li>
		</ul>
		 
		<p>
		هناك أشياء أخرى يمكن استخدام متجه 4D لتمثيلها ، ولكن هذه هي
		الاستخدامات الأكثر شيوعًا في *three.js*.
		</p>
		 
		<p>
		التكرار عبر مثيل [name] سيعطي مكوناته `(x، y، z، w)` بالترتيب المقابل.
		</p>
		 
		<h2>مثال للكود</h2>
		 
		<code>
		const a = new THREE.Vector4( 0, 1, 0, 0 );
		 
		//لا معاملات؛ سيتم تهيئته إلى (0 ، 0 ، 0 ، 1)
		const b = new THREE.Vector4( );
		 
		const d = a.dot( b );
		</code>
		 
		<h2>المنشئ (Constructor)</h2>
		 
		<h3>
		[name]( [param:Float x], [param:Float y], [param:Float z], [param:Float w] )
		</h3>
		<p>
		[page:Float x] - قيمة x لهذا المتجه. الافتراضية هي `0`.<br />
		[page:Float y] - قيمة y لهذا المتجه. الافتراضية هي `0`.<br />
		[page:Float z] - قيمة z لهذا المتجه. الافتراضية هي `0`.<br />
		[page:Float w] - قيمة w لهذا المتجه. الافتراضية هي `1`.<br /><br />
		 
		ينشئ جديدًا [name].
		</p>
		 
		<h2>الخصائص (Properties)</h2>
		 
		<h3>[property:Boolean isVector4]</h3>
		<p>علامة للقراءة فقط للتحقق مما إذا كان كائنًا معطىً من نوع [name].</p>
		 
		<h3>[property:Float x]</h3>

		<h3>[property:Float y]</h3>

		<h3>[property:Float z]</h3>
		
		<h3>[property:Float w]</h3>
		
		<h3>[property:Float width]</h3>
		<p>الاسم المستعار لـ [page:.z z].</p>
		
		<h3>[property:Float height]</h3>
		<p>الاسم المستعار لـ [page:.w w].</p>
		
		<h2>الطرق (Methods)</h2>
		
		<h3>[method:this add]( [param:Vector4 v] )</h3>
		<p>يضيف [page:Vector4 v] إلى هذا المتجه.</p>
		
		<h3>[method:this addScalar]( [param:Float s] )</h3>
		<p>
		يضيف القيمة القياسية s إلى قيم [page:.x x] و [page:.y y] و
		[page:.z z] و [page:.w w] لهذا المتجه.
		</p>
		
		<h3>[method:this addScaledVector]( [param:Vector4 v], [param:Float s] )</h3>
		<p>
		يضيف مضاعفة [page:Vector4 v] و [page:Float s] إلى هذا المتجه.
		</p>
		
		<h3>[method:this addVectors]( [param:Vector4 a], [param:Vector4 b] )</h3>
		<p> يضبط هذا المتجه على [page:Vector4 a] + [page:Vector4 b]. </p>
		
		<h3>[method:this applyMatrix4]( [param:Matrix4 m] )</h3>
		<p> يضرب هذا المتجه في 4 × 4 [page:Matrix4 m]. </p>
		
		<h3>[method:this ceil]()</h3>
		<p>
		يتم تقريب مكونات [page:.x x] و [page:.y y] و [page:.z z] و
		[page:.w w] من هذا المتجه إلى أعلى إلى أقرب قيمة صحيحة.
		</p>
		
		<h3>[method:this clamp]( [param:Vector4 min], [param:Vector4 max] )</h3>
		<p>
		[page:Vector4 min]- الحد الأدنى للقيمة [page:.x x] و [page:.y y] و
		[page:.z z] و[page:.w w]. <br />
		[page:Vector4 max]- الحد الأقصى للقيمة [page:.x x] و [page:.y y] و
		[page:.z z] و[page:.w w] في النطاق المطلوب <br /> <br />
		
		إذا كانت قيم x أو y أو z أو w لهذا المتجه أكبر من قيمة x أو y أو z أو w للمتجه الأقصى ، فإنها
		تستبدل بالقيمة المقابلة. <br /> <br />
		إذا كانت قيم x أو y أو z أو w لهذا المتجه أقل من قيمة x أو y أو z
		أو w للمتجه الأدنى ، يتم استبداله بالقيمة المقابلة.
		</p>

		<h3>[method:this clampLength]( [param:Float min], [param:Float max] )</h3>
		<p>
		[page:Float min]- الحد الأدنى للقيمة التي سيتم تثبيتها على الطول <br />
		[page:Float max]- الحد الأقصى للقيمة التي سيتم تثبيتها على الطول <br /> <br />
		
		إذا كان طول هذا المتجه أكبر من القيمة القصوى ، يتم استبداله بـ
		القيمة القصوى. <br /> <br />
		إذا كان طول هذا المتجه أقل من الحد الأدنى للقيمة ، يتم استبداله بـ
		الحد الأدنى للقيمة.
		</p>
		
		<h3>[method:this clampScalar]( [param:Float min], [param:Float max] )</h3>
		<p>
		[page:Float min]- الحد الأدنى للقيمة التي سيتم تثبيت المكونات عليها
		<br />
		[page:Float max]- الحد الأقصى للقيمة التي سيتم تثبيت المكونات عليها <br /> <br />
		
		إذا كانت قيم x أو y أو z أو w لهذا المتجه أكبر من الحد الأقصى للقيمة ، فإنها
		تستبدل بالحد الأقصى للقيمة. <br /> <br />
		إذا كانت قيم x أو y أو z أو w لهذا المتجه أقل من الحد الأدنى للقيمة ، فإنها
		تستبدل بالحد الأدنى للقيمة.
		</p>
		
		<h3>[method:Vector4 clone]()</h3>
		<p>
		يرجع Vector4 جديدًا بنفس قيم [page:.x x] و [page:.y y] و [page:.z z]
		و [page:.w w] كهذا.
		</p>
		
		<h3>[method:this copy]( [param:Vector4 v] )</h3>
		<p>
		ينسخ قيم خصائص [page:.x x] و [page:.y y] و [page:.z z] و [page:.w w] من Vector4 المار إلى هذا Vector4.
		</p>
		
		<h3>[method:this divideScalar]( [param:Float s] )</h3>
		<p> يقسم هذا المتجه على العدد القياسي [page:Float s]. </p>
		
		<h3>[method:Float dot]( [param:Vector4 v] )</h3>
		<p>
		يحسب [link:https://en.wikipedia.org/wiki/Dot_product حاصل ضرب نقطة]
		هذا المتجه و [page:Vector4 v].
		</p>
		
		<h3>[method:Boolean equals]( [param:Vector4 v] )</h3>
		<p>
		يرجع `true` إذا كانت مكونات هذا المتجه و [page:Vector4 v]
		صارمًا مساوية ؛ `false` في حالات أخرى.
		</p>
		
		<h3>[method:this floor]()</h3>
		<p>
		يتم تقريب مكونات هذا المتجه إلى أسفل إلى أقرب قيمة صحيحة
		قيمة.
		</p>
		
		<h3>
		[method:this fromArray]( [param:Array array], [param:Integer offset])
		</h3>
		<p>
		[page:Array array]- المصفوفة المصدر. <br />
		[page:Integer offset]- (اختياري) إزاحة في المصفوفة. الافتراضي هو 0. <br /> <br />
		
		يضبط قيمة [page:.x x] لهذا المتجه لتكون `array [offset + 0]` ، قيمة [page:.y y]
		لتكون `array [offset + 1]` قيمة [page:.z z] لتكون `array [offset + 2]`
		وقيمة [page:.w w] لتكون `array [offset + 3]`.
		</p>
		
		<h3>
		[method:this fromBufferAttribute]( [param:BufferAttribute attribute], [param:Integer index])
		</h3>
		<p>
		[page:BufferAttribute attribute]- السمة المصدر. <br />
		[page:Integer index]- فهرس في السمة. <br /> <br />
		
		يضبط قيم [page:.x x] و [page:.y y] و [page:.z z] و [page:.w w]
		لهذا المتجه من [page:BufferAttribute attribute].
		</p>
		
		<h3>[method:Float getComponent]( [param:Integer index] )</h3>
		<p>
		[page:Integer index]- 0، 1، 2 أو 3. <br /> <br />
		
		إذا كان index يساوي 0 يعود بقيمة [page:.x x]. <br />
		إذا كان index يساوي 1 يعود بقيمة [page:.y y]. <br />
		إذا كان index يساوي 2 يعود بقيمة [page:.z z].<br />
		إذا كان index يساوي 3 يعود بقيمة [page:.w w].
		</p>
		
		<h3>[method:Float length]()</h3>
		<p>
		يحسب [link:https://en.wikipedia.org/wiki/Euclidean_distance الطول الإقليدي]
		(طول المستقيم) من `(0، 0، 0، 0)` إلى `(x، y، z، w)`.
		</p>
		
		<h3>[method:Float manhattanLength]()</h3>
		<p>
		يحسب طول مانهاتن لهذا المتجه.
		</p>
		
		<h3>[method:Float lengthSq]()</h3>
		<p>
		يحسب مربع
		[link:https://en.wikipedia.org/wiki/Euclidean_distance الطول الإقليدي]
		(طول المستقيم) من `(0، 0، 0، 0)` إلى `(x، y، z، w)`. إذا كنت
		تقارن أطوال المتجهات ، فيجب عليك مقارنة الطول المربع
		بدلاً من ذلك لأنه أكثر كفاءة قليلاً في الحساب.
		</p>
		
		<h3>[method:this lerp]( [param:Vector4 v], [param:Float alpha] )</h3>
		<p>
		[page:Vector4 v]- [page:Vector4] للتداخل نحوه. <br />
		[page:Float alpha]- عامل التداخل ، عادةً في الفاصل المغلق
		الفاصل "[0، 1]". <br /> <br />
		
		يتداخل بشكل خطي بين هذا المتجه و [page:Vector4 v] ، حيث
		alpha هو نسبة المسافة على طول الخط - سيكون `alpha = 0` هذا
		المتجه ، و `alpha = 1` سيكون [page:Vector4 v].
		</p>
		
		<h3>
		[method:this lerpVectors]( [param:Vector4 v1], [param:Vector4 v2], [param:Float alpha])
		</h3>
		<p>
		[page:Vector4 v1]- [page:Vector4] الابتدائية. <br />
		[page:Vector4 v2]- [page:Vector4] للتداخل نحوه. <br />
		[page:Float alpha]- عامل التداخل ، عادةً في الفاصل المغلق
		الفاصل `[0، 1]`. <br /> <br />
		
		يضبط هذا المتجه ليكون المتجه المتداخل خطيًا بين
		[page:Vector4 v1] و [page:Vector4 v2] حيث alpha هو نسبة
		المسافة على طول الخط الذي يربط بين المتجهين - سيكون alpha = 0
		[page:Vector4 v1] ، وسيكون alpha = 1 [page:Vector4 v2].
		</p>
		
		<h3>[method:this negate]()</h3>
		<p>يعكس هذا المتجه - أي يضبط x = -x و y = -y و z = -z و w = -w.</p>
		
		<h3>[method:this normalize]()</h3>
		<p>
		يحول هذا المتجه إلى [link:https://en.wikipedia.org/wiki/Unit_vector متجه وحدة]
		- أي يضعه يساوي متجهًا بنفس الاتجاه
		كهذا ، لكن [page:.length الطول] 1.
		</p>
		
		<h3>[method:this max]( [param:Vector4 v] )</h3>
		<p>
		إذا كانت قيمة x أو y أو z أو w لهذا المتجه أقل من قيمة x أو y أو z أو w لـ [page:Vector4 v]
		، استبدل تلك القيمة بالقيمة القصوى المقابلة.
		</p>
		
		<h3>[method:this min]( [param:Vector4 v] )</h3>
		<p>
		إذا كانت قيمة x أو y أو z أو w لهذا المتجه أكبر من قيمة x أو y أو z أو w لـ [page:Vector4 v]
		، استبدل تلك القيمة بالقيمة الدنيا المقابلة.
		</p>
		
		<h3>[method:this multiply]( [param:Vector4 v] )</h3>
		<p> يضرب هذا المتجه في [page:Vector4 v]. </p>
		
		<h3>[method:this multiplyScalar]( [param:Float s] )</h3>
		<p>يضرب هذا المتجه بالعدد القياسي [page:Float s].</p>
		
		<h3>[method:this round]()</h3>
		<p>
		يتم تقريب مكونات هذا المتجه إلى أقرب قيمة صحيحة.
		</p>
		
		<h3>[method:this roundToZero]()</h3>
		<p>
		يتم تقريب مكونات هذا المتجه نحو الصفر (لأعلى إذا كانت سالبة ،
		لأسفل إذا كانت موجبة) إلى قيمة صحيحة.
		</p>
		
		<h3>
		[method:this set]( [param:Float x], [param:Float y], [param:Float z], [param:Float w] )
		</h3>
		<p>
		يضبط مكونات [page:.x x] و [page:.y y] و [page:.z z] و [page:.w w]
		من هذا المتجه.
		</p>
		
		<h3>[method:this setAxisAngleFromQuaternion]( [param:Quaternion q] )</h3>
		<p>
		[page:Quaternion q] - a normalized [page:Quaternion]<br /><br />
		
		يضبط مكونات [page:.x x] و [page:.y y] و [page:.z z] من هذا
		المتجه على محور الرباعية و[page:.w w] على الزاوية.
		</p>
		
		<h3>[method:this setAxisAngleFromRotationMatrix]( [param:Matrix4 m] )</h3>
		<p>
		[page:Matrix4 m] - a [page:Matrix4] of which the upper left 3x3 matrix is
		a pure rotation matrix.<br /><br />
		
		يضبط [page:.x x] و [page:.y y] و [page:.z z] على محور الدوران
		و[page:.w w] على الزاوية.
		</p>
		
		<h3>
		[method:this setComponent]( [param:Integer index], [param:Float value])
		</h3>
		<p>
		[page:Integer index]- 0، 1، 2 أو 3. <br /> <br />
		[page:Float value]- [page:Float]<br /> <br />
		
		إذا كان index يساوي 0 ، فقم بتعيين [page:.x x] إلى [page:Float value].<br />
		إذا كان index يساوي 1 ، فقم بتعيين [page:.y y] إلى [page:Float value].<br />
		إذا كان index يساوي 2 ، فقم بتعيين [page:.z z] إلى [page:Float value].<br />
		إذا كان index يساوي 3 ، فقم بتعيين [page:.w w] إلى [page:Float value].
		</p>

		<h3>[method:this setLength]( [param:Float l] )</h3>
		<p>
		يضبط هذا المتجه على متجه بنفس الاتجاه كهذا ، لكن
		[page:.length الطول] [page:Float l].
		</p>
		
		<h3>[method:this setScalar]( [param:Float scalar] )</h3>
		<p>
		يضبط قيم [page:.x x] و [page:.y y] و [page:.z z] و [page:.w w] من
		هذا المتجه متساوية مع [page:Float scalar].
		</p>
		
		<h3>[method:this setX]( [param:Float x] )</h3>
		<p>يستبدل قيمة [page:.x x] لهذا المتجه بـ [page:Float x].</p>
		
		<h3>[method:this setY]( [param:Float y] )</h3>
		<p>يستبدل قيمة [page:.y y] لهذا المتجه بـ [page:Float y].</p>
		
		<h3>[method:this setZ]( [param:Float z] )</h3>
		<p>يستبدل قيمة [page:.z z] لهذا المتجه بـ [page:Float z].</p>
		
		<h3>[method:this setW]( [param:Float w] )</h3>
		<p>يستبدل قيمة [page:.w w] لهذا المتجه بـ [page:Float w].</p>
		
		<h3>[method:this sub]( [param:Vector4 v] )</h3>
		<p>يطرح [page:Vector4 v] من هذا المتجه.</p>
		
		<h3>[method:this subScalar]( [param:Float s] )</h3>
		<p>
		يطرح [page:Float s] من مكونات هذا المتجه [page:.x x] و [page:.y y]
		و[page:.z z] و[page:.w w].
		</p>
		
		<h3>[method:this subVectors]( [param:Vector4 a], [param:Vector4 b] )</h3>
		<p>يضبط هذا المتجه على [page:Vector4 a] - [page:Vector4 b].</p>
		
		<h3>
		[method:Array toArray]( [param:Array array], [param:Integer offset])
		</h3>
		<p>
		[page:Array array]- (اختياري) مصفوفة لتخزين هذا المتجه فيها. إذا لم يتم توفير هذا ، سيتم إنشاء مصفوفة جديدة. <br />
		[page:Integer offset]- (اختياري) إزاحة اختيارية في المصفوفة. <br /> <br />
		
		يرجع مصفوفة [x، y، z، w] ، أو ينسخ x و y و z و w في المصفوفة المقدمة
		[page:Array array].
		</p>
		
		<h3>[method:this random]()</h3>
		<p>
		يضبط كل مكون من مكونات هذا المتجه على قيمة شبه عشوائية بين 0 و
		1 ، باستثناء 1.
		</p>

		<h2>المصدر (Source)</h2>

		<p>
			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
		</p>
	</body>
</html>
